package com.cinema;

import com.cinema.controller.MainController;
import com.cinema.util.Constants;
import com.cinema.util.DbUtil;

/**
 * 影院管理系统主程序入口
 * 
 * @author Cinema Management System
 * @version 1.0.0
 */
public class Main {
    
    /**
     * 主方法
     * 
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        try {
            // 显示系统欢迎信息
            displayWelcomeMessage();

            maybeInitDatabase();
            
            // 创建主控制器并启动系统
            MainController mainController = new MainController();
            mainController.start();
            
        } catch (Exception e) {
            System.err.println("系统启动失败：" + e.getMessage());
            e.printStackTrace();
            System.exit(1);
        }
    }
    
    /**
     * 显示系统欢迎信息
     */
    private static void displayWelcomeMessage() {
        System.out.println(Constants.SEPARATOR_LINE);
        System.out.println("            " + Constants.SYSTEM_NAME);
        System.out.println("                版本 " + Constants.VERSION);
        System.out.println(Constants.SEPARATOR_LINE);
        System.out.println();
        System.out.println("欢迎使用东平县万东电影院管理系统！");
        System.out.println("本系统将帮助您实现影院管理的全面数字化。");
        System.out.println();
        System.out.println("系统功能包括：");
        System.out.println("• 用户管理：管理员、经理、前台三种角色");
        System.out.println("• 影片管理：电影信息的增删改查");
        System.out.println("• 排片管理：场次安排和自动排片");
        System.out.println("• 票务管理：售票、退票、座位管理");
        System.out.println("• 财务管理：销售统计和收入统计");
        System.out.println("• 日志管理：操作记录和审计追踪");
        System.out.println();
        System.out.println("正在启动系统，请稍候...");
        System.out.println();
    }

    private static void maybeInitDatabase() {
        String prop = System.getProperty("initDb");
        String env = System.getenv("INIT_DB");
        boolean doInit = (prop != null && prop.equalsIgnoreCase("y")) || (env != null && env.equalsIgnoreCase("y"));
        if (doInit) {
            try {
                System.out.println("开始初始化数据库...");
                DbUtil.runSqlResource("data/schema.sql");
                try {
                    DbUtil.runSqlResource("data/seed.sql");
                } catch (Exception ex) {
                    System.err.println("seed.sql 执行失败，将尝试兼容版 seed_compat.sql。错误：" + ex.getMessage());
                    DbUtil.runSqlResource("data/seed_compat.sql");
                }
                System.out.println("数据库初始化完成。");
            } catch (Exception e) {
                System.err.println("数据库初始化失败：" + e.getMessage());
            }
            System.out.println();
        }
    }
} 